remove bogus g_return_if_fail
authorHavoc Pennington <hp@redhat.com>
Fri, 8 Jun 2001 20:15:49 +0000 (20:15 +0000)
committerHavoc Pennington <hp@src.gnome.org>
Fri, 8 Jun 2001 20:15:49 +0000 (20:15 +0000)
2001-06-08  Havoc Pennington  <hp@redhat.com>

* gdk-pixbuf-loader.c (gdk_pixbuf_loader_load_module): remove
bogus g_return_if_fail

* io-gif.c (gif_get_lzw): if delay time is 0 or smaller than
likely timeout resolution, set it to an arbitrarily-chosen short
delay.
Fixes bug #55953 from warmenhoven@yahoo.com

gdk-pixbuf/ChangeLog
gdk-pixbuf/gdk-pixbuf-loader.c
gdk-pixbuf/io-gif-animation.c
gdk-pixbuf/io-gif.c

index 0bccb2498f9c909a82c5f2ece40609ee12411e6a..4e44e8b17e4352d1678a8a94cd9567ef70a37297 100644 (file)
@@ -1,3 +1,13 @@
+2001-06-08  Havoc Pennington  <hp@redhat.com>
+
+       * gdk-pixbuf-loader.c (gdk_pixbuf_loader_load_module): remove
+       bogus g_return_if_fail  
+
+       * io-gif.c (gif_get_lzw): if delay time is 0 or smaller than
+       likely timeout resolution, set it to an arbitrarily-chosen short
+       delay.
+       Fixes bug #55953 from warmenhoven@yahoo.com
+
 2001-06-07  Havoc Pennington  <hp@redhat.com>
 
        * Makefile.am: use Owen's new way of doing stampfiles/generated
index cb167e64a00454582009027bd819d0d6813355c1..a147e8b85706fbde98e06ad25ccc89aaab9639d3 100644 (file)
@@ -226,7 +226,6 @@ gdk_pixbuf_loader_load_module (GdkPixbufLoader *loader,
     }
   else
     {
-      g_return_val_if_fail (priv->header_buf_offset > 0, 0);
       priv->image_module = _gdk_pixbuf_get_module (priv->header_buf,
                                                    priv->header_buf_offset,
                                                    NULL,
index fe164a0958dd597ec3348750d7ff1e3befdbcb86..d334cc421ef7d052e920c2f728ee2e6fd1a766b1 100644 (file)
@@ -272,7 +272,7 @@ gdk_pixbuf_gif_anim_iter_advance (GdkPixbufAnimationIter *anim_iter,
         elapsed =
           (((iter->current_time.tv_sec - iter->start_time.tv_sec) * G_USEC_PER_SEC +
             iter->current_time.tv_usec - iter->start_time.tv_usec)) / 1000;
-        
+
         if (elapsed < 0) {
                 /* Try to compensate; probably the system clock
                  * was set backwards
@@ -280,14 +280,14 @@ gdk_pixbuf_gif_anim_iter_advance (GdkPixbufAnimationIter *anim_iter,
                 iter->start_time = iter->current_time;
                 elapsed = 0;
         }
+
+        g_assert (iter->gif_anim->total_time > 0);
         
         /* See how many times we've already played the full animation,
          * and subtract time for that.
          */
         elapsed = elapsed % iter->gif_anim->total_time;
 
-        g_assert (elapsed < iter->gif_anim->total_time);
-
         iter->position = elapsed;
         
         /* Now move to the proper frame */
index 0a710ab112aa3f8b1b6f756bc547c49c038aa65e..68dcaa43056c128068ba5460445b2c3e7aeb4ca0 100644 (file)
@@ -753,8 +753,17 @@ gif_get_lzw (GifContext *context)
                 
                 /* GIF delay is in hundredths, we want thousandths */
                 context->frame->delay_time = context->gif89.delay_time * 10;
+
+                /* Some GIFs apparently have delay time of 0,
+                 * that crashes everything so set it to "fast".
+                 * Also, timeouts less than 20 or so just lock up
+                 * the app or make the animation choppy, so fix them.
+                 */
+                if (context->frame->delay_time < 20)
+                        context->frame->delay_time = 20; /* 20 = "fast" */
+                
                 context->frame->elapsed = context->animation->total_time;
-                context->animation->total_time += context->frame->delay_time;
+                context->animation->total_time += context->frame->delay_time;                
                 
                 switch (context->gif89.disposal) {
                 case 0: